/**
 * Created by wangshaohua on 16/1/23.
 */
String.prototype.replaceAll = function (s1, s2) {
    return this.replace(/\n/g, "<br/>")
    return this.replace(new RegExp(s1, "gm"), s2);
}

var sz_StringHelper = function () {
};

sz_StringHelper.isEmpty = function (str) {
    return !!(str == null || str == undefined || str == "");
};

sz_StringHelper.isNotEmpty = function (str) {
    return !(str == null || str == undefined || str == "");
};

sz_StringHelper.isObject = function(value) {
    // http://jsperf.com/isobject4
    return value !== null && typeof value === 'object';
}
//
// sz_StringHelper.remove$Prefix = function(obj) {
//     if (sz_StringHelper.isObject(obj)) {
//         const keys = Object.keys(obj);
//         const o = <any>{};
//         keys.forEach((value, index) => {
//             if (!value.startsWith('$')) {
//             o[value] = obj[value];
//         }
//     });
//         return o;
//     } else {
//         return obj;
//     }
// }

sz_StringHelper.isBlankObject = function(value) {
    return value !== null && typeof value === 'object' && !Object.getPrototypeOf(value);
}

sz_StringHelper.isString = function(value) {
    return typeof value === 'string';
}

sz_StringHelper.isNumber = function(value) {
    return typeof value === 'number';
}

sz_StringHelper.isDate = function(value) {
    return Object.prototype.toString.call(value) === '[object Date]';
}

sz_StringHelper.isArray = function(value) {
    return Array.isArray;
}


String.prototype.format = function (args) {
    var result = this;
    var reg;
    if (arguments.length > 0) {
        if (arguments.length == 1 && typeof (args) == "object") {
            for (var key in args) {
                if (args[key] != undefined) {
                    reg = new RegExp("({" + key + "})", "g");
                    result = result.replace(reg, args[key]);
                }
            }
        }
        else {
            for (var i = 0; i < arguments.length; i++) {
                if (sz_StringHelper.isNotEmpty(arguments[i])) {
                    //var reg = new RegExp("({[" + i + "]})", "g");//这个在索引大于9时会有问题，谢谢何以笙箫的指出
                    reg = new RegExp("({)" + i + "(})", "g");
                    result = result.replace(reg, arguments[i]);
                }
            }
        }
    }
    return result;
};

String.prototype.removeParam = function (ref) {
    var url = this;
    var str = "";
    if (url.indexOf('?') != -1) {
        str = url.substr(url.indexOf('?') + 1);
    } else {
        return url;
    }
    var arr = "";
    var returnurl = "";
    var setparam = "";
    if (str.indexOf('&') != -1) {
        arr = str.split('&');
        for (i in arr) {
            if (arr[i].split('=')[0] != ref) {
                returnurl = returnurl + arr[i].split('=')[0] + "=" + arr[i].split('=')[1] + "&";
            }
        }
        return url.substr(0, url.indexOf('?')) + "?" + returnurl.substr(0, returnurl.length - 1);
    } else {
        arr = str.split('=');
        if (arr[0] == ref) {
            return url.substr(0, url.indexOf('?'));
        }
        else {
            return url;
        }
    }
}

sz_StringHelper.randomString = function (len) {
    len = len || 32;
    var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
    var maxPos = $chars.length;
    var pwd = '';
    for (i = 0; i < len; i++) {
        pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return pwd;
}

sz_StringHelper.isJson = function (str) {
    if (typeof str == 'string') {
        try {
            var obj = JSON.parse(str);
            if (typeof obj == 'object' && obj) {
                return true;
            } else {
                return false;
            }

        } catch (e) {
            console.log('error：' + str + '!!!' + e);
            return false;
        }
    }
}